1177

6 分钟

#Bash 的 if 条件语句

Bash 的 if 条件语句的语法为:

if 条件命令 then 命令 ... elif 条件命令 then 命令 ... else 命令 ... fi

其中,条件命令返回成功(0)时为真(true),返回失败(非 0)时为假(false)。

如果省略(部分)换行,则需要使用分号(;)区分:

if 条件命令; then 命令; 命令; elif 条件命令; then 命令; 命令; else 命令; 命令; fi

示例:

if test "$SHELL" = "/bin/bash" then echo 很好 else echo 完蛋 fi
  • 判断变量 SEHLL 的值是否是 /bin/bash

注意,这里的 "$SHELL" = "/bin/bash" 不要省略引号写成 $SHELL = /bin/bash;否则变量 SHELL 为空时会产生语法错误。

  • = - 判断字符串相等
  • != - 判断字符串不同

#test 命令

如上述示例代码,Bash 的条件一般使用 test 命令,格式为:

test 条件表达式 [ 条件表达式 ] # 不可省略空格 [[ 条件表达式 ]] # 不可省略空格
  • test[ 是等价的,它们既是 Bash 的内置命令,也是可执行文件
  • [[ 是 Bash 的关键字,额外支持正则判断

test 命令的常用选项如下:

  • -e - 文件存在
  • -f - 文件存在且是普通文件
  • -d - 文件存在且是目录
  • -b - 文件存在且是块设备
  • -c - 文件存在且是字符设备
  • -L - 文件存在且是符号链接
  • -eq - 等于(只能用于整数,下同)
  • -ne - 不等于
  • -lt - 小于
  • -le - 小于或等于
  • -gt - 大于
  • -ge - 大于或等于

例如:

FILE="$0" if [ -f $FILE ]; then echo $FILE 是普通文件 elif [ -e $FILE ]; then echo $FILE 不是普通文件 else echo $FILE 文件不存在 fi

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

#true 和 false

Bash 的内置命令中包含 truefalse 两个命令,前者直接返回成功(0),后者直接返回失败(1)。

创建于 2025/9/10

更新于 2025/9/14